package vue;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;

import modele.ObjetSimple;
import depot.DepotSimple;

public class DepotSimpleFrm extends JDialog {

	/**
	 * Form ID
	 */
	private static final long serialVersionUID = 1L;
    
    /**
     * BD
     */
    private DepotSimple<ObjetSimple> depot;
    
	private final JComboBox<ObjetSimple> cmbAuteurs = new JComboBox<ObjetSimple>();
	private final JButton btnAjouter = new JButton("Ajouter");
	private final JButton btnModifier = new JButton("Modifier");
	private final JButton btnSupprimer = new JButton("Supprimer");
	
	/**
	 * Affiche la form
	 * @param bd BD active
	 */
	public void afficher() {
        this.trierListe();
        this.setVisible(true);
    }
    
	/**
	 * Tri le combobox
	 */
    private void trierListe() {
        cmbAuteurs.removeAllItems();
        ArrayList<ObjetSimple> tabAuteurs = depot.getAllList();
        Collections.sort(tabAuteurs);
        for(ObjetSimple objet : tabAuteurs) {
            cmbAuteurs.addItem(objet);
        }
    }

	/**
	 * Create the dialog.
	 */
	public DepotSimpleFrm(DepotSimple<ObjetSimple> _depot) {
        this.depot = _depot;
		setModal(true);
		setTitle(depot.nomDepot);
		setBounds(100, 100, 381, 111);
		getContentPane().setLayout(null);
		
		cmbAuteurs.setBounds(12, 12, 345, 24);
		getContentPane().add(cmbAuteurs);
		
		btnAjouter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				ObjetSimpleFrm frm = new ObjetSimpleFrm(depot.nomObjet);
				ObjetSimple nouv = frm.creer();
				if (nouv != null) {
					depot.add(nouv);
		        	trierListe();
				}
			}
		});
		btnAjouter.setBounds(12, 48, 107, 25);
		getContentPane().add(btnAjouter);
		
		btnModifier.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				ObjetSimpleFrm frm = new ObjetSimpleFrm(depot.nomObjet);
		        ObjetSimple nouv = (ObjetSimple) cmbAuteurs.getSelectedItem();
		        if (frm.modifier(nouv)) {
		        	depot.modify(nouv);
		        	trierListe();
		        }
			}
		});
		btnModifier.setBounds(131, 48, 107, 25);
		getContentPane().add(btnModifier);
		btnSupprimer.setEnabled(false);
		
		btnSupprimer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				depot.remove((ObjetSimple) cmbAuteurs.getSelectedItem());
		        cmbAuteurs.removeItem(cmbAuteurs.getSelectedItem());
			}
		});
		btnSupprimer.setForeground(Color.RED);
		btnSupprimer.setBounds(250, 48, 107, 25);
		getContentPane().add(btnSupprimer);
	}
}
